import { useUserStore } from '@/store/modules/user'

/**
 * 字符权限校验
 * @param {string[]} value 校验值
 * @returns {boolean}
 */
export function checkPermi(value: string[]): boolean {
  try {
    // 严格检查输入参数
    if (!value || !Array.isArray(value) || value.length === 0) {
      return false
    }

    const userStore = useUserStore()

    // 检查 userStore 是否存在
    if (!userStore) {
      console.warn('UserStore not available')
      return false
    }

    // 安全获取权限列表
    const permissions = userStore.permissions
    if (!permissions || !Array.isArray(permissions)) {
      console.warn('Permissions not loaded or invalid:', permissions)
      return false
    }

    const all_permission = "*:*:*"

    // 安全检查权限
    const hasPermission = permissions.some((permission: string) => {
      if (typeof permission !== 'string') {
        return false
      }
      return all_permission === permission || value.includes(permission)
    })

    return hasPermission
  } catch (error) {
    console.error('Error in checkPermi:', error)
    return false
  }
}

/**
 * 角色权限校验
 * @param {string[]} value 校验值
 * @returns {boolean}
 */
export function checkRole(value: string[]): boolean {
  try {
    // 严格检查输入参数
    if (!value || !Array.isArray(value) || value.length === 0) {
      return false
    }

    const userStore = useUserStore()

    // 检查 userStore 是否存在
    if (!userStore) {
      console.warn('UserStore not available')
      return false
    }

    // 安全获取角色列表
    const roles = userStore.roles
    if (!roles || !Array.isArray(roles)) {
      console.warn('Roles not loaded or invalid:', roles)
      return false
    }

    const super_admin = "admin"

    // 安全检查角色
    const hasRole = roles.some((role: string) => {
      if (typeof role !== 'string') {
        return false
      }
      return super_admin === role || value.includes(role)
    })

    return hasRole
  } catch (error) {
    console.error('Error in checkRole:', error)
    return false
  }
}